﻿#region Copyright Notice
// This file is part of GestionPedago.
// <description>
// Copyright (C) 2012 ENI Ecole Informatique
// 
// GestionPedago is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// <program> is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
#endregion

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows.Input;
using GestionPedago.Services.ES.Modele;
using GestionPedago.Services.ES;
using GestionPedago.Services;


namespace GestionPedago.ViewModel {

    /// <summary>
    /// Classe qui représente le cartouche avec les informations du Stagiaire courrant
    /// </summary>
    public class CartoucheStagiaireVM : BaseViewModel {

        /// <summary>
        /// Fenêtre principale
        /// </summary>
        public MainWindowVM vmMainWindow { get; set; }

        private ObservableCollection<EvenementPedagogiqueES> pListeEvenementsPedagogique;

        /// <summary>
        /// Liste des évenements pédagogiques du stagiaire
        /// </summary>
        public ObservableCollection<EvenementPedagogiqueES> ListeEvenementsPedagogique {
            get {
                if(pListeEvenementsPedagogique == null && vmMainWindow.CurrentStagiaire.ListeEvenementPedagogique != null)
                    pListeEvenementsPedagogique = new ObservableCollection<EvenementPedagogiqueES>(vmMainWindow.CurrentStagiaire.ListeEvenementPedagogique);
                return pListeEvenementsPedagogique;
            }
            set {
                pListeEvenementsPedagogique = value;
                RaisePropertyChanged("ListeEvenementsPedagogique");
            }
        }


        private ObservableCollection<CoursES> pCours;
        /// <summary>
        /// Liste des cours du stagiaire 
        /// </summary>
        public ObservableCollection<CoursES> Cours {
            get {
                if(pCours == null && vmMainWindow.CurrentStagiaire.ListeAllPlanningIndividuelDetail != null) {
                    pCours = new ObservableCollection<CoursES>();
                    List<CoursES> listeCours = new List<CoursES>();
                    foreach(PlanningIndividuelDetailES pid in vmMainWindow.CurrentStagiaire.ListeAllPlanningIndividuelDetail) {
                        listeCours.Add(pid.Cours);
                    }

                    listeCours.Sort(new CoursESComparer());

                    foreach(CoursES cours in listeCours) {
                        pCours.Add(cours);
                    }
                }

                return pCours;

            }
            set {
                pCours = value;
                RaisePropertyChanged("Cours");
            }
        }

        /// <summary>
        /// Mise à jour de la liste des évenements du stagiaire
        /// </summary>
        /// <param name="stagiaire"></param>
        public void UpdateListeEvenement(StagiaireES stagiaire) {
            RechercherListeEvtPedagogiquesIn paramEntree = new RechercherListeEvtPedagogiquesIn();
            paramEntree.CodeStagiaire = stagiaire.CodeStagiaire;
            this.vmMainWindow.CurrentStagiaire = stagiaire;
            this.ListeEvenementsPedagogique = new System.Collections.ObjectModel.ObservableCollection<EvenementPedagogiqueES>(FacadeServices.GetInstance().RechercherListeEvtPedagogiques(paramEntree).ListeEvenements);
        }

        /// <summary>
        /// Constructeur de la classe CartoucheStagiaireVM
        /// </summary>
        /// <param name="vmmainwindow">Fenêtre principale</param>
        public CartoucheStagiaireVM(MainWindowVM vmmainwindow) {
            vmMainWindow = vmmainwindow;
        }

    }
}
